import router from '@/router'
import store from '@/store'

router.beforeEach(async(to, from, next) => {
  // console.log(5, store.state.user.userInfo)
  if (store.getters.token) {
    // 当已登录状况，用户访问还是登录页面的时候，直接跳转首页
    // 因为通常情况下，已登录状态了是不允许用户访问登录页面的
    if (to.path === '/login') {
      next('/')
    } else {
      // 进入页面之前调用获取用户信息接口
      if (!store.state.user.userInfo.id) {
        await store.dispatch('user/getUserInfo')
        // console.log(333333, store.state.user.menus)
        if (store.state.user.menus) {
          await store.dispatch('permission/filterRoutes', store.state.user.menus)
          router.addRoutes([...store.state.permission.routes], { path: '*', redirect: '/404', hidden: true })
          // console.log(19, '-----', store.state.permission.routes)
          next(to.path)
        }
        // await store.dispatch('permission/filterRoutes')
      }
      next() // 放行
    }
  } else {
    // 当前跳转的目标路由对象如果是登陆页面的话，应该直接放行，否则才跳转到登陆页面
    const writeArr = ['/login', '/404', '/register'] // 白名单，白名单里面的所有页面都不需要登录就可以直接访问的
    if (writeArr.indexOf(to.path) !== -1) {
      next()
    } else {
      next('/login')
    }
  }
})
